// import 'dart:convert';
//
// import 'package:analyzer/dart/analysis/results.dart';
// import 'package:analyzer/dart/analysis/utilities.dart';
// import 'package:analyzer/dart/ast/ast.dart';
// import 'package:analyzer/dart/ast/visitor.dart';
// // pubspec.yaml里面#  analyzer: 2.8.0 打开 pub get下 这个文件才能用 代码转成json
// // func
// // func1() {}
// //
// // class Test {
// //   // method
// //   func2() {}
// // }
//
// main() {
//   String content = 'int a = 10 + 20;';
//   ParseStringResult result = parseString(content: content);
//   CompilationUnit unit = result.unit;
//   // unit.visitChildren(MyVisitor());
//
//   var astResult = unit.accept(SimpleVisitor());
//   print(JsonEncoder.withIndent('  ').convert(astResult));
// }
//
// class MyVisitor extends GeneralizingAstVisitor {
//   @override
//   visitNode(AstNode node) {
//     print('${node.runtimeType} : ${node.toSource()}');
//     return super.visitNode(node);
//   }
// }
//
// class SimpleVisitor extends SimpleAstVisitor<Map> {
//   @override
//   Map visitCompilationUnit(CompilationUnit node) {
//     return {'unit': accept(node.declarations, this)};
//   }
//
//   @override
//   Map visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
//     return {'topLevel': node.variables.accept(this)};
//   }
//
//   @override
//   Map visitVariableDeclaration(VariableDeclaration node) {
//     return {
//       'name': node.name.accept(this),
//       'initializer': node.initializer?.accept(this)
//     };
//   }
//
//   @override
//   Map visitVariableDeclarationList(VariableDeclarationList node) {
//     return {
//       'type': node.type?.accept(this),
//       'variables': accept(node.variables, this)
//     };
//   }
//
//   @override
//   Map visitTypeName(TypeName node) {
//     return {'name': node.name.name};
//   }
//
//   @override
//   Map visitSimpleIdentifier(SimpleIdentifier node) {
//     return {'identifier': node.name};
//   }
//
//   @override
//   Map visitBinaryExpression(BinaryExpression node) {
//     return {
//       'operation': node.operator.lexeme,
//       'leftParams': node.leftOperand.accept(this),
//       'rightParas': node.rightOperand.accept(this)
//     };
//   }
//
//   @override
//   Map visitIntegerLiteral(IntegerLiteral node) {
//     return {'value': node.value};
//   }
//
//   List<Map> accept(NodeList<Declaration> elements, AstVisitor visitor) {
//     List<Map> list = [];
//     for (var i = 0; i < elements.length; i++) {
//       Map res = elements[i].accept(visitor);
//       list.add(res);
//     }
//     return list;
//   }
// }
